package com.edu.admin.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.edu.admin.common.BaseMapper;
import com.edu.admin.entity.SysSchool;
import com.edu.admin.vo.PhaseVo;
import com.edu.admin.vo.SchoolVo;

/**
 * 学校表数据操作接口
 * 
 * @author Wangjiong
 * 
 */
@Mapper
public interface SchoolMapper extends BaseMapper<SysSchool> {

	/**
	 * 获取学校信息
	 * 
	 * @param Long schoolId
	 * 
	 * @return SchoolVo
	 */
	SchoolVo getSchool(@Param("schoolId") Long schoolId);
	

	/**
	 * 获取可用学校列表
	 * 
	 * @param String provinceCode
	 * @param String cityCode
	 * @param String districtCode
	 * @param String schoolName
	 * 
	 * @return List<SchoolVo>
	 */
	List<SchoolVo> getSchoolList(@Param("provinceCode") String provinceCode,
			@Param("cityCode") String cityCode, 
			@Param("districtCode") String districtCode, 
			@Param("schoolName") String schoolName);
	
	/**
	 * 获取所学校列表（包括停用学校）
	 * 
	 * @param String provinceCode
	 * @param String cityCode
	 * @param String districtCode
	 * @param String schoolName
	 * 
	 * @return List<SchoolVo>
	 */
	List<SchoolVo> getAllSchoolList(@Param("provinceCode") String provinceCode,
			@Param("cityCode") String cityCode, 
			@Param("districtCode") String districtCode, 
			@Param("schoolName") String schoolName);
	
	
	/**
	 * 获取所在学校的学段列表
	 * 
	 * @param @Param Long schoolId
	 * 
	 * @return List<PhaseVo>
	 */
	List<PhaseVo> getSchoolPhaseList(@Param("schoolId") Long schoolId);
	
	/**
	 * 学校查重
	 * 
	 * @param Long schoolId
	 * @param String schoolName
	 * @Param String provinceCode,
	 * @Param String cityCode,
	 * @Param String districtCode
	 * 
	 * @return List<ProductVo>
	 */
	List<SchoolVo> findSchoolBySchoolName(@Param("schoolId") Long schoolId,
									@Param("schoolName") String schoolName,
									@Param("provinceCode") String provinceCode,
									@Param("cityCode") String cityCode,
									@Param("districtCode") String districtCode);
	
	/**
	 * 更新学校班级数
	 * 
	 * @param Long schoolId
	 * @return Integer
	 */
	Integer updateSchoolClassesNum(Long schoolId);
	
	/**
	 * 更新学校教师数
	 * 
	 * @param Long schoolId
	 * @return Integer
	 */
	Integer updateSchoolTeacherNumBySchoolId(Long schoolId);
	
	/**
	 * 更新学校学生数
	 * 
	 * @param Long schoolId
	 * @return Integer
	 */
	Integer updateSchoolStudentNumBySchoolId(Long schoolId);
	
	/**
	 * 更新学校教师数
	 * 
	 * @param 
	 * @return Integer
	 */
	Integer updateSchoolTeacherNum();
	
	/**
	 * 更新学校学生数
	 * 
	 * @param
	 * @return Integer
	 */
	Integer updateSchoolStudentNum();
	
	
	

}
